分享一个自己写的爬虫框架 - 网络爬虫 - ITeye群组

创建时间:2016/3/15 23:33
来源:http://crawl.group.iteye.com/group/topic/38325


之前写过一年的垂直爬虫(抓博客什么的),对于各种重复代码很厌倦,后来参考了据说是最优秀的爬虫框架scrapy,写了一个Java版的框架webmagic。
看到这个群讨论nutch和Heritrix的比较多,我是比较不喜欢这种动辄要写一本书的工具,webmagic对于小规模抓取足够了。
webmagic自己用着还是挺顺手的,底层封装了HttpClient、Jsoup、HtmlCleaner,支持多线程,也包括url去重、重试、编码判断、自动抽取什么的。
希望能帮到各位自己手写爬虫代码,但是厌倦了重复工作的同学,以及为了一些简单需求却要去看一本书来学用Heritrix的同学
代码不长,自认为模块化的也挺清晰,如果对爬虫原理感兴趣的可以看一看。
以下是使用webmagic抓取某个iteye博客的所有文章,并提取标题和正文的爬虫代码:
Java代码
 收藏代码
  1. public class IteyeBlogProcessor implements PageProcessor {  
  2.   
  3.     private Site site;  
  4.   
  5.     @Override  
  6.     public void process(Page page) {  
  7.         page.addTargetRequests(page.getHtml().links().regex(".*yanghaoli\\.iteye\\.com/blog/\\d+").all());  
  8.         page.putField("title",page.getHtml().xpath("//title").toString());  
  9.         //自动抽取正文,用到了readability  
  10.         page.putField("content",page.getHtml().smartContent().toString());  
  11.     }  
  12.   
  13.     @Override  
  14.     public Site getSite() {  
  15.         if (site == null) {  
  16.             site = Site.me().setDomain("yanghaoli.iteye.com").addStartUrl("http://yanghaoli.iteye.com/").setSleepTime(100).setRetryTimes(3);  
  17.         }  
  18.         return site;  
  19.     }  
  20.   
  21.     public static void main(String[] args) {  
  22.         Spider.create(new IteyeBlogProcessor()).thread(5).pipeline(new FilePipeline("/data/webmagic/")).run();  
  23.     }  
  24. }  


已收录到oschina:http://www.oschina.net/p/webmagic
github:https://github.com/code4craft/webmagic